From: tsteven4 Date: Fri, 11 Jan 2019 17:11:25 +0000 (-0700) Subject: fix leaks when deleting wpts in filters. (#292) X-Git-Tag: archive/raspbian/1.10.0+ds-2+rpi1~1^2~12^2~8^2~52 X-Git-Url: https://dgit.raspbian.org/%22http:/www.example.com/cgi/%22https://%22%22/%22http:/www.example.com/cgi/%22https:/%22%22?a=commitdiff_plain;h=776ccdda08d6883ce6e684fe7d10ab7b628e234c;p=gpsbabel.git fix leaks when deleting wpts in filters. (#292) --- diff --git a/discard.cc b/discard.cc index 18fa36214..b80e598d8 100644 --- a/discard.cc +++ b/discard.cc @@ -91,17 +91,19 @@ void DiscardFilter::fix_process_wpt(const Waypoint* wpt) switch (what) { case wptdata: waypt_del(waypointp); + delete waypointp; break; case trkdata: track_del_wpt(head, waypointp); + delete waypointp; break; case rtedata: route_del_wpt(head, waypointp); + delete waypointp; break; default: return; } - delete waypointp; } } diff --git a/position.cc b/position.cc index ea6cc94bf..6e6cf4c73 100644 --- a/position.cc +++ b/position.cc @@ -87,9 +87,11 @@ void PositionFilter::position_runqueue(queue* q, int nelems, int qtype) break; case trkdata: track_del_wpt(cur_rte, comp[j]); + delete comp[j]; break; case rtedata: route_del_wpt(cur_rte, comp[j]); + delete comp[j]; break; default: break; @@ -103,17 +105,19 @@ void PositionFilter::position_runqueue(queue* q, int nelems, int qtype) switch (qtype) { case wptdata: waypt_del(comp[i]); + delete comp[i]; break; case trkdata: track_del_wpt(cur_rte, comp[i]); + delete comp[i]; break; case rtedata: route_del_wpt(cur_rte, comp[i]); + delete comp[i]; break; default: break; } - delete comp[i]; } } } diff --git a/trackfilter.cc b/trackfilter.cc index 04e9086ce..6ca98ec08 100644 --- a/trackfilter.cc +++ b/trackfilter.cc @@ -1012,6 +1012,7 @@ void TrackFilter::trackfilter_segment_head(const route_head* rte) if (trackfilter_points_are_same(prev_wpt, wpt) && trackfilter_points_are_same(wpt, next_wpt)) { track_del_wpt(const_cast(rte), wpt); + delete wpt; continue; } }